
Ext.require([
	'SnowMIS.store.system.User'
	, 'SnowMIS.toolkit.security.Cryptogram'
]);

/**
 * 
 */
Ext.define('SnowMIS.view.system.User', {
	extend : 'SnowMIS.view.ShowPanel' // 继承父类
	, alias : 'widget.userpanel' // 别名
	, labelWidth : 100 // 设置标签长度
	, autoHeight : true
	, bufferResize : true
	, padding : '5 5 5 5'
	, modelId : null
	, parentPanel : null
	, initComponent : function() {
		var panel = this;
		var action = this.getAction(); // 执行的动作
		var method = this.getMethod(); // 执行的方法
		var modelId = this.modelId; // 模型ID
		var readOnly = action == 'show'; // 判断是否设置为只读
		Ext.apply(this, {
			autoShow : true
			, items : [{
				xtype : 'form'
				, bodyPadding : 5
				, border : false
				, items : [{
					xtype : 'fieldset'
					, title : '账号信息'
					, labelWidth : 80
					, autoHeight : true // 设置自动高度
					, collapsible : true // 设置可折叠
					, border : false
					, items : [{
						xtype : 'panel'
						, layout : 'column'
						, border : false
						, items : [{
							xtype : 'form'
							, columnWidth : 1/3
							, border : false
							, items : [{
								xtype : 'textfield'
								, tabIndex : 1
								, anchor : '95%'
								, name : 'loginName'
								, labelAlign : 'right'
								, readOnly : readOnly
								, fieldLabel : '用户账号'
								, inputType : 'text'
								, allowBlank : false
								, blankText : '用户名不能为空！'
								, minLength : 4
								, maxLength : 20
							}, {
								xtype : 'textfield'
								, tabIndex : 2
								, anchor : '95%'
								, name : 'loginPass'
								, labelAlign : 'right'
								, readOnly : readOnly
								, fieldLabel : '用户密码'
								, inputType : 'password'
								, allowBlank : false
								, blankText : '用户密码不能为空！'
								, minLength : 4
							}, {
								xtype : 'textfield'
								, tabIndex : 3
								, anchor : '95%'
								, name : 'reLoginPass'
								, labelAlign : 'right'
								, readOnly : readOnly
								, fieldLabel : '确认密码'
								, inputType : 'password'
								, allowBlank : false
								, blankText : '确认密码不能为空！'
								, minLength : 4
							}]
						}]
					}]
				}, {
					xtype : 'fieldset'
					, title : '个人信息'
					, autoHeight : true // 设置自动高度
					, collapsible : true // 设置可折叠
					, labelAlign : 'right' // 设置文字标签位置
					, border : false
					, items : [{
						xtype : 'panel'
						, layout : 'column'
						, autoWidth : true
						, border : false
						, items : [{
							xtype : 'form'
							, columnWidth : 1/3
							, border : false
							, items : [{
								xtype : 'textfield'
								, tabIndex : 10
								, name : 'realName'
								, anchor : '95%'
								, labelAlign : 'right'
								, readOnly : readOnly
								, fieldLabel : '真实姓名'
								, inputType : 'text'
							}, {
								xtype : 'textfield'
								, tabIndex : 10
								, name : 'telephone'
								, anchor : '95%'
								, labelAlign : 'right'
								, readOnly : readOnly
								, fieldLabel : '联系电话'
								, inputType : 'text'
							}, {
								xtype : 'textfield'
								, tabIndex : 10
								, name : 'postcode'
								, anchor : '95%'
								, labelAlign : 'right'
								, readOnly : readOnly
								, fieldLabel : '邮政编码'
								, inputType : 'text'
							}]
						}, {
							xtype : 'form'
							, columnWidth : 1/3
							, border : false
							, items : [{
								xtype : 'textfield'
								, tabIndex : 10
								, name : 'gender'
								, anchor : '95%'
								, labelAlign : 'right'
								, readOnly : readOnly
								, fieldLabel : '用户性别'
								, inputType : 'text'
							}, {
								xtype : 'textfield'
								, tabIndex : 10
								, name : 'cellphone'
								, anchor : '95%'
								, labelAlign : 'right'
								, readOnly : readOnly
								, fieldLabel : '手机号码'
								, inputType : 'text'
							}]
						}, {
							xtype : 'form'
							, columnWidth : 1/3
							, border : false
							, items : [{
								xtype : 'datefield'
								, tabIndex : 10
								, name : 'birthday'
								, anchor : '95%'
								, labelAlign : 'right'
								, readOnly : readOnly
								, format : 'Y-m-d'
								, fieldLabel : '出生日期'
							}, {
								xtype : 'textfield'
								, tabIndex : 10
								, name : 'address'
								, anchor : '95%'
								, labelAlign : 'right'
								, readOnly : readOnly
								, fieldLabel : '联系地址'
								, inputType : 'text'
							}]
						}]
					}]
				}]
			}]
			, buttonAlign : 'center'
			, buttons : [{
				xtype : 'button'
				, text : '提交'
				, hidden : readOnly
				, handler : function() {
					if (panel instanceof Ext.form.Panel) {
						var parentPanel = panel.getParentPanel();
						var actionVal = panel.getAction();
						var form = panel.getForm();
						if (form instanceof Ext.form.Basic && form.isValid()) {
							var url = basePath + 'services/rest/system/users';
							if (modelId) {
								url += '/' + modelId;
							}
							var loginPassField = form.findField('loginPass');
							var loginPass = loginPassField.getValue();
							var reLoginPassField = form.findField('reLoginPass');
							var reLoginPass = reLoginPassField.getValue();
							if (loginPass != reLoginPass) {
								Ext.Msg.alert('警告', '您两次输入的密码不一致！');
								return;
							}
							loginPass = SnowMIS.Cryptogram.md5(loginPass);
							loginPassField.setValue(loginPass);
							reLoginPass = SnowMIS.Cryptogram.md5(reLoginPass);
							reLoginPassField.setValue(reLoginPass);
							form.submit({
								url : url
								, method : method
								, type : 'JSON'
								, success : function(form, action) {
									Ext.Msg.alert('Success', action.result.message, function() {
										var centerPanel = Ext.getCmp('centerPanel'); // 获取中央面板的信息
										var menuTabId = 'menu_tab_system_user_' +　actionVal;
										var currentTab = Ext.getCmp(menuTabId);
										if (centerPanel.remove(currentTab)) {
											if (parentPanel) {
												centerPanel.setActiveTab(parentPanel); // 激活当前的tab信息
												var store = parentPanel.getStore();
												if (store) {
													store.load();
												}
											}
										}
									});
									return;
								}
								, failure : function(form, action) {
									switch (action.failureType) {
							            case Ext.form.action.Action.CLIENT_INVALID:
							                Ext.Msg.alert('Failure', 'Form fields may not be submitted with invalid values');
							                break;
							            case Ext.form.action.Action.CONNECT_FAILURE:
							                Ext.Msg.alert('Failure', 'Ajax communication failed');
							                break;
							            case Ext.form.action.Action.SERVER_INVALID:
							               Ext.Msg.alert('Failure', action.message);
							               break;
							       }
								}
							});
						}
					}
				}
			}, {
				xtype : 'button'
				, text : '关闭'
				, hidden : !readOnly
				, handler : function() {
					panel.close();
				}
			}, {
				xtype : 'button'
				, text : '重置'
				, handler : function() {
					if (panel instanceof Ext.form.Panel) {
						var form = panel.getForm();
						if (form instanceof Ext.form.Basic) {
							form.reset();
						}
					}
				}
			}]
		});
		if (readOnly) {
		}
		this.callParent(arguments);
	}
});
